package br.ufpb.di.ppgi.apresentacao.controllers;

import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.simtecnologia.access.controll.annotation.ControlledResource;
import br.com.simtecnologia.access.controll.role.Roles;
import br.ufpb.di.ppgi.apresentacao.SiteConfiguration;
import br.ufpb.di.ppgi.negocio.ServiceLocator;
import br.ufpb.di.ppgi.negocio.iservicos.IDefesaService;
import br.ufpb.di.ppgi.negocio.iservicos.IPropostaService;
import br.ufpb.di.ppgi.negocio.modelo.defesa.Defesa;
import br.ufpb.di.ppgi.negocio.modelo.proposta.Proposta;
import br.ufpb.di.ppgi.persistencia.pagination.ListaPaginada;

@Path("/admin/acompanhamentos/")
@ControlledResource
@Roles({"COORDENADOR"})
public class AcompanhamentosRestrictController extends AbstractController {
	
    private final IPropostaService servico_proposta;
    private final IDefesaService servico_defesa;
	

	public AcompanhamentosRestrictController(Result result, Validator validator,
			ServiceLocator services, SiteConfiguration conf) {
		super(result, validator, services);

		this.servico_proposta = services.forProposta();
		this.servico_defesa = services.forDefesa();
	}
	
	@Path("")
	public void index() {
//		result.include("pendencias", servico_proposta.listarPendencias( new Long(2) ));
	}
	
	@Path("propostas")
	public void listarProposta(String keyword,Integer page) {
		page = page == null || page < 0 ? 1 : page;
		keyword  = keyword == null ? "" : keyword.trim();
		
		String base = "admin/acompanhamentos/propostas?"+(keyword.isEmpty() ? "key="+keyword+"&" : "")+"page=";
		ListaPaginada<Proposta> listaPaginada = servico_proposta.filtrarPaginando(keyword,page,base);
		if (listaPaginada.getQtdPaginas() < page) {
			page = listaPaginada.getQtdPaginas();
			listaPaginada = servico_proposta.filtrarPaginando(keyword,page,base);
		}
			
   		result.include("listaPaginada", listaPaginada.setMaximoDePaginas(5));
   		result.include("propostas", listaPaginada.getLista());
	}
	
	@Path("defesas")
	public void listarDefesa(String keyword,Integer page) {
		page = page == null || page < 0 ? 1 : page;
		keyword  = keyword == null ? "" : keyword.trim();
		
		String base = "admin/acompanhamentos/propostas?"+(keyword.isEmpty() ? "key="+keyword+"&" : "")+"page=";
		ListaPaginada<Defesa> listaPaginada = servico_defesa.filtrarPaginando(keyword,page,base);
		if (listaPaginada.getQtdPaginas() < page) {
			page = listaPaginada.getQtdPaginas();
			listaPaginada = servico_defesa.filtrarPaginando(keyword,page,base);
		}
			
   		result.include("listaPaginada", listaPaginada.setMaximoDePaginas(5));
   		result.include("propostas", listaPaginada.getLista());
	}	
}